package codingforgreat.lchot150;

import java.util.*;

public class Lc046 {
        public List<List<Integer>> permute(int[] nums) {
        List<List<Integer>> res = new ArrayList<>();
        List<Integer> path = new ArrayList<>();
        List<Integer> arr = new ArrayList<>();
        for(int i = 0;i < nums.length;i++){
            arr.add(nums[i]);
        }
        process(arr,path,res);
        return res;
    }
    public void process(List<Integer> arr,List<Integer> path,List<List<Integer>> res){
        if(arr.isEmpty()){
            res.add(new ArrayList(path));
            return;
        }else{
            int N = arr.size();
            for (int i = 0; i < N; i++) {
                int n = arr.get(i);
                path.add(n);
                arr.remove(i);
                process(arr,path,res);
                path.remove(path.size() - 1);
                arr.add(i,n);
            }
        }
    }
}
